[IA64] Bug fixes to assign_domain_mmio_page()
authorawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Thu, 1 Mar 2007 22:02:09 +0000 (15:02 -0700)
committerawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Thu, 1 Mar 2007 22:02:09 +0000 (15:02 -0700)
 - phys_addr also needs to be rounded down to a page start
 - return the original mpaddr, not the modified one

Signed-off-by: Alex Williamson <alex.williamson@hp.com>
xen/arch/ia64/xen/mm.c

index 9ce2c34949050b1e703de5313a6d51d5a87c4f62..4ce0094e34f16d8067484f63251387466c095838 100644 (file)
@@ -1048,7 +1048,9 @@ assign_domain_mmio_page(struct domain *d, unsigned long mpaddr,
                         unsigned long phys_addr, unsigned long size,
                         unsigned long flags)
 {
+    unsigned long addr = mpaddr & PAGE_MASK;
     unsigned long end = PAGE_ALIGN(mpaddr + size);
+
     if (size == 0) {
         gdprintk(XENLOG_INFO, "%s: domain %p mpaddr 0x%lx size = 0x%lx\n",
                 __func__, d, mpaddr, size);
@@ -1061,9 +1063,9 @@ assign_domain_mmio_page(struct domain *d, unsigned long mpaddr,
         return -EINVAL;
     }
 
-    for (mpaddr &= PAGE_MASK; mpaddr < end;
-         mpaddr += PAGE_SIZE, phys_addr += PAGE_SIZE) {
-        __assign_domain_page(d, mpaddr, phys_addr, flags);
+    for (phys_addr &= PAGE_MASK; addr < end;
+         addr += PAGE_SIZE, phys_addr += PAGE_SIZE) {
+        __assign_domain_page(d, addr, phys_addr, flags);
     }
 
     return mpaddr;